開発環境のNAT GatewayをNAT InstanceにしてAWS利用費を削減した話
はじめに
私が担当しているプロジェクトの本番環境とステージング環境ではNAT Gatewayを利用しています。可用性を重視しない開発環境はNAT GatewayをNAT Instanceに代えたらAWS利用費を削減できるのではないかと考え、やってみました。
NAT ゲートウェイと NAT インスタンスの違いは公式のドキュメントにありますので、以下をご覧ください。
NAT Instanceの作成方法
以前はNAT Instance用のAMIが提供されていたのですが、現在はないため自分で作成します。手順は公式のドキュメントにありました。簡単なのでガイドの通りにやれば15分ほどでできるかと思います。
私はt4g.nanoのEC2インスタンス上に構築しました。OSはAmazon Linux2023です。EC2のスペック表を確認したところt4g.nanoのネットワーク帯域は上位の t4g.micro や t4g.small と同じ最大5Gbpsです。nanoで捌けるのかという不安はありましたが、今のところNAT Gatewayの時よりも遅くなったと感じていません。
どの程度利用費が削減できたのか?
ひと月でどの程度利用費が削減できたのかを計算します。リージョンは東京リージョンです。NAT Instanceは冗長化はしていません。
NAT Gatewayの料金
NAT Gatewayは起動しているだけで毎時$0.062かかります。そのためひと月で$46.128($0.062 × 24時間 × 31日)ほどかかります。
これにデータ処理料金がかかります。 1GBのデータがNAT Gatewayを経由すると$0.062かかります。私が担当しているプロジェクトは月80GBで$5ほどでした。この費用はNAT Instanceではかかりません。
データ処理料金は環境によりますが、NAT Gatewayの場合は合計で約$51ほどでした。
※他にもデータ転送量がかかりますが、NAT Instanceの場合もかかりますので割愛します。
NAT Instanceの料金
NAT Instanceの料金を計算します。EC2インスタンスタイプはt4g.nanoを使います。EC2を起動する時間は土日祝日を除いた平日の8:00から18:00の10時間とします。先月(2023年10月)であれば21日なので、$0.0054 × 10時間 × 21日で$1.134です。計算間違えてないかと疑ってしまうほど安いですね。
この他にNAT Instanceの場合はEBSの料金がかかります。EBSのタイプは汎用 SSD (gp3)です。1GBあたり月$0.096で、8GBなので$0.768です。
合計で約$2ほどでした。何かあった場合は自分で対応する必要があるため運用コストがかかりますが、NAT Gateway1つにつき節約できた金額は月$49になりました。
※EC2を自動で起動停止するツールは弊社のopswitchというツールを使いました。opswitchは AWS ファンデーショナルテクニカルレビュー (FTR) を通過した「AWS 認定ソフトウェア」です。無料ですので是非お試しください。
EC2の起動停止の設定方法は以下のドキュメントをご覧ください。
AWS運用かんたん自動化ツール「opswitch」(オプスウィッチ)でEC2インスタンスの起動・停止をスケジュールする
NAT Instanceに置き換える際の注意点として、NAT Gatewayを削除してもElastic IPが残るので忘れずに削除しましょう。
最後に
やってみたところt4g.nanoのコスパが非常によく、かなり節約できました。 NAT Gatewayはとても素晴らしいサービスですが、以下の場合はNAT Instanceへの置き換えを検討してみてはいかがでしょうか。
- AWS利用費を削減したい。
- 可用性は低くても問題ない。
- 5Gbps以上のネットワーク帯域は必要ない。
- メンテナンスは自分でできる。